The Advanced Configuration and Power Interface (ACPI) specification is a computer architecture-related standard developed to establish industry common interfaces for enabling robust operating system (OS)-directed motherboard device configuration and power management of both devices and entire platforms. The ACPI specification evolves the existing collection of power management basic input/output system (BIOS) code, Advanced Power Management (APM) Application Program Interfaces (APIs), Plug and Play Basic Input/Output System (PNPBIOS) APIs, and Multiprocessor Specification (MPS) tables, into a well-defined, integrated power management and configuration interface specification. From a manufacturing and implementation perspective, the ACPI specification enables different computer platforms to implement common motherboard configuration and power management functions. From a power management perspective, it promotes the concept that platforms should conserve energy by transitioning unused devices into lower power states. For example, computer platforms employing ACPI-compatible implementations are able to optimize processor clock speed, control motherboard and peripheral device power consumption, and place an entire computer platform into a low-power or sleeping state.
Centralizing power management and related directives in the OS has made it practical and compelling for original equipment manufacturers (OEMs) to support and exploit ACPI-defined interfaces. To implement ACPI-defined interfaces and take advantage of the functionality offered by them, OEMs include OEM devices that are supported by OEM description tables, commonly called “OEMX tables.” Description tables, including the OEMX tables and ACPI specification supported tables, enable device operation by providing the computer platform, and in particular an ACPI subsystem, with the specifications of the interfaces and features of the device.
The existing implementation of OEMX tables, however, is not without limitations. For instance, during the initialization of the computer platform, the ACPI subsystem loads the necessary description tables, including the OEMX tables, based on firmware access defined by the platform's OS. To load a particular description table, accordingly, the ACPI subsystem requires knowledge of the layout of the table. For tables defined by the ACPI standards, such as Secondary System Description Tables (SSDTs), this is not a problem. The format, structure and contents of OEMX vendor tables, however, is entirely up to the OEM vendor and unknown to the ACPI subsystem. Accordingly, during initialization, the ACPI subsystem cannot load the OEMX tables in a vendor-neutral and platform-neutral manner without breaching the modularity between the kernel space and OEM code space where the knowledge of the layout of the OEM tables is stored.